﻿using MongoDB.Driver;
using Sustainalytics.Entities;
using System.Collections.Generic;

namespace Sustainalytics.ScreeningTool.Synchronization.Handlers
{
    public interface IHandler<T> where T : IEntity
    {
        ProjectionDefinition<T> GetProjection(ProjectionDefinitionBuilder<T> builder);

        IEnumerable<ExtraElement> GetExtraElements(T entity);
    }

    public interface IHandlerWithGrouping<T> where T : IHasCompanyId
    {
        ProjectionDefinition<T> GetProjection(ProjectionDefinitionBuilder<T> builder);

        IEnumerable<ExtraElement> GetExtraElements(IEnumerable<T> entities);
    }
}
